public class hammingWeight {
    public int hammingWeight(int n) {
        //转为二进制字符串统计1的个数
        return Integer.toBinaryString(n).replace("0", "").length();
    }
    public int hammingWeight2(int n) {
        //位运算
        int res = 0;
        while (n != 0) {
            res++;
            // 利用位运算特性，将n与n-1按位与，可以消除n中最右边的一个1
            n = n & (n - 1);
        }
        return res;
    }
    public int hammingWeight3(int n) {
        //位运算
        int res = 0;
        while (n != 0) {
            // 判断当前位是否为1
            res += n & 1;
            // 将整数n进行无符号右移，位移1位，相当于除以2
            n = n >>> 1;
        }
        return res;
    }
}
